<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>Document</title>
  <style>
    h1 {
      width: 250px;
      margin: 100px auto 50px auto;
    }

    .item {
      width: 500px;
      height: 50px;
      margin: 0 auto;
      text-align: center;
      font-size: 30px;
      color: orange;
    }

    strong {
      background-color: orange;
      padding: 0 10px;
      color: #fff;
      border-radius: 4px;
    }
  </style>
</head>

<body>
  <h1>距离光棍节,还有</h1>
  <div class="item">
    <span><span class="day">00</span>天</span>
    <strong><span class="hour">00</span>时</strong>
    <strong><span class="min">00</span>分</strong>
    <strong><span class="second">00</span>秒</strong>
  </div>

  <script>
    // 1. 获取时间差
    // Date() 是一个构造函数  如果没有参数则获取当前系统事件，如果传递yyyy-MM-dd字符串，则转换为Date对象类型
    var endTime = new Date('2021-11-11 00:00:00').getTime();
    var dayEl = document.querySelector('.day');
    var hourEl = document.querySelector('.hour');
    var minEl = document.querySelector('.min');
    var secEl = document.querySelector('.second');


    setInterval(function () {
      // 当前时间
      var nowTime = new Date().getTime();
      // 时间差
      var chaTime = endTime - nowTime;
      // 把毫秒换算为 天  时  分  秒
      // 日和ms的换算
      var s_ms = 1000;
      // 分和毫秒
      var m_ms = 60 * s_ms;
      var h_ms = 60 * m_ms;
      var d_ms = 24 * h_ms;
      // 毫秒/天毫秒 =  天数... 余 毫秒
      var day = Math.floor(chaTime / d_ms);
      // 用天数用不尽的毫秒 对 小时毫秒 求余 得到时整小时数
      // chaTime%d_ms得到的是day用不完剩余的毫秒数
      var hour = Math.floor((chaTime % d_ms) / h_ms);
      var min = Math.floor((chaTime % h_ms) / m_ms);
      var sec = Math.floor((chaTime % m_ms) / s_ms);
      // console.log(format(day) + ' ' + format(hour) + ':' + format(min) + ':' + format(sec));
      dayEl.innerText = format(day);
      hourEl.innerText = format(hour);
      minEl.innerText = format(min);
      secEl.innerText = format(sec);

    }, 1000)
    /**
    * 0 ==> 00
    * 11 ==>  11
    **/
    function format(n) {
      return n < 10 ? ('0' + n) : n;
    }


  </script>
</body>

</html>